--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / tests / backend / test_integrity_critical_only.py
Displaying Raw • Download
tests/backend/test_integrity_critical_only.py 3f7ef731b5effd9aa3a81eceea66fd6c2b56498c (3f7ef731) Text, 2.66 KB
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""Extra integrity edge cases for critical-only startup checks."""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72import T7ee787shutil
Tff7b72import T7ee787tempfile
Tff7b72import T7ee787unittest
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787integrity_manager Tff7b72import Tb4b4b4(
Te6edf3IntegrityManagerTb4b4b4,
Te6edf3select_critical_integrity_issuesTb4b4b4,
Tb4b4b4)
Tff7b72class T56d364TestCriticalOnlyIntegrityTb4b4b4(Te6edf3unittestTff7b72.Td2a8ffTestCaseTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffsetUpTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftest_dir Tff7b72= Te6edf3tempfileTff7b72.Td2a8ffmkdtempTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdb_path Tff7b72= Te6edf3PathTb4b4b4(Tff7b72selfTff7b72.Td2a8fftest_dirTb4b4b4) Tff7b72/ Ta5d6ff"Ta5d6ffdatabase.dbTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffdb_pathTff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffdb-bytesTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffidentity_path Tff7b72= Te6edf3PathTb4b4b4(Tff7b72selfTff7b72.Td2a8fftest_dirTb4b4b4) Tff7b72/ Ta5d6ff"Ta5d6ffidentityTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffidentity_pathTff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffidentity-bytesTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmanager Tff7b72= Te6edf3IntegrityManagerTb4b4b4(
Tff7b72selfTff7b72.Td2a8fftest_dirTb4b4b4,
Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdb_pathTb4b4b4)Tb4b4b4,
Te6edf3identity_hashTff7b72=Ta5d6ff"Ta5d6ffhash-aTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmanagerTff7b72.Td2a8ffsave_manifestTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8fftearDownTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3shutilTff7b72.Td2a8ffrmtreeTb4b4b4(Tff7b72selfTff7b72.Td2a8fftest_dirTb4b4b4)
Tff7b72def Td2a8fftest_critical_only_passes_unchanged_treeTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3is_okTb4b4b4, Te6edf3issues Tff7b72= Tff7b72selfTff7b72.Td2a8ffmanagerTff7b72.Td2a8ffcheck_integrityTb4b4b4(Te6edf3critical_onlyTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3is_okTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3select_critical_integrity_issuesTb4b4b4(Te6edf3issuesTb4b4b4)Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)
Tff7b72def Td2a8fftest_critical_only_detects_missing_identityTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffidentity_pathTff7b72.Td2a8ffunlinkTb4b4b4(Tb4b4b4)
Te6edf3is_okTb4b4b4, Te6edf3issues Tff7b72= Tff7b72selfTff7b72.Td2a8ffmanagerTff7b72.Td2a8ffcheck_integrityTb4b4b4(Te6edf3critical_onlyTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3is_okTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(
Te6edf3select_critical_integrity_issuesTb4b4b4(Te6edf3issuesTb4b4b4)
Tff7b72or Tffa657anyTb4b4b4(Ta5d6ff"Ta5d6ffmissingTa5d6ff" Tff7b72in Te6edf3iTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72for Te6edf3i Tff7b72in Te6edf3issuesTb4b4b4)
Tb4b4b4)
Tff7b72def Td2a8fftest_critical_only_skips_non_critical_size_driftTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3notes Tff7b72= Te6edf3PathTb4b4b4(Tff7b72selfTff7b72.Td2a8fftest_dirTb4b4b4) Tff7b72/ Ta5d6ff"Ta5d6ffnotes.binTa5d6ff"
Te6edf3notesTff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffaaaaTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmanagerTff7b72.Td2a8ffsave_manifestTb4b4b4(Tb4b4b4)
Te6edf3notesTff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ffbbbbbbbbTa5d6ff"Tb4b4b4)
Te6edf3is_ok_criticalTb4b4b4, Te6edf3issues_critical Tff7b72= Tff7b72selfTff7b72.Td2a8ffmanagerTff7b72.Td2a8ffcheck_integrityTb4b4b4(
Te6edf3critical_onlyTff7b72=Tff7b72True
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(
Te6edf3is_ok_critical Tff7b72or Tff7b72not Te6edf3select_critical_integrity_issuesTb4b4b4(Te6edf3issues_criticalTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3is_ok_fullTb4b4b4, Te6edf3issues_full Tff7b72= Tff7b72selfTff7b72.Td2a8ffmanagerTff7b72.Td2a8ffcheck_integrityTb4b4b4(Te6edf3critical_onlyTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3is_ok_fullTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Tffa657anyTb4b4b4(Ta5d6ff"Ta5d6ffnotes.binTa5d6ff" Tff7b72in Te6edf3issue Tff7b72for Te6edf3issue Tff7b72in Te6edf3issues_fullTb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_select_critical_markers_cover_identity_and_dbTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3issues Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ffFile signature mismatch: notes.binTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffCritical security component integrity compromised: identityTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffDatabase structural issue: corruptTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffIdentity mismatch! Manifest belongs to: otherTa5d6ff"Tb4b4b4,
Tb4b4b4]
Te6edf3critical Tff7b72= Te6edf3select_critical_integrity_issuesTb4b4b4(Te6edf3issuesTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Tffa657lenTb4b4b4(Te6edf3criticalTb4b4b4)Tb4b4b4, T79c0ff3Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertNotInTb4b4b4(Ta5d6ff"Ta5d6ffFile signature mismatch: notes.binTa5d6ff"Tb4b4b4, Te6edf3criticalTb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────